Git 文档

Git 全局设置

git config --global user.name "王大盼"
git config --global user.email "wangdap@mail.open.com.cn"
1
2

创建新版本库

git clone git@gitlab.open.com.cn:jpwlyx/school-base-front-evaluation.git
cd school-base-front-evaluation
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
1
2
3
4
5
6

已存在的文件夹

cd existing_folder
git init
git remote add origin git@gitlab.open.com.cn:jpwlyx/school-base-front-evaluation.git
git add .
git commit
git push -u origin master
1
2
3
4
5
6

已存在的 Git 版本库

cd existing_repo
git remote add origin git@gitlab.open.com.cn:jpwlyx/school-base-front-evaluation.git
git push -u origin --all
git push -u origin --tags
1
2
3
4

查看远程仓库地址

git remote -v
1

切换远程分支

git remote set-url origin git@xxx/vue-press/vue-press.git
git remote set-url origin https://xxxvue-press/vue-press.git
1
2

查看本地分支和追踪情况

git remote show origin
1

查看历史


git log  //显示当前分支的版本历史

git log --all  //显示所有分支的版本历史

git log --graph  //以图表形式显示版本历史
1
2
3
4
5
6

删除远程分支

git push origin --delete [branch_name]
1

本地删除远程已经不存在的分支

git remote prune origin
1

当前分支基于哪个分支

 git reflog show 395
1

撤销 commit

git reflog
git reset --hard commit id
1
2

git 重置

# 重置到指定版本,之前提交内容将丢失
git reset --hard HEAD
# 重置到指定版本,保留更改的文件但未标记为提交
git reset --mixed HEAD
# 重置到指定版本,保留所有改动文件
git reset –soft HEAD
#重置到master
git reset --hard origin/master
1
2
3
4
5
6
7
8

查看两次分支不一样的代码

git diff --name-only commitID1 commitID2
1

合并 commitid

git log

git rebase -i commitid

pick 的意思是要会执行这个 commit
squash 的意思是这个 commit 会被合并到前一个commit

然后输入:wq以保存并退出

如果这有操作错误,可以使用 git rebase --abort来撤销修改,回到没有开始操作合并之前的状态

git rebase --continue  退出当前状态
1
2
3
4
5
6
7
8
9
10
11
12

Git 忽略规则(.gitignore 配置)不生效原因和解决

.gitignore 中已经标明忽略的文件目录下的文件,git push 的时候还会出现在 push 的目录中,或者用 git status 查看状态,想要忽略的文件还是显示被追踪状态。 原因是因为在 git 忽略目录中,新建的文件在 git 中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore 中已经声明了忽略路径也是不起作用的, 这时候我们就应该先把本地缓存删除,然后再进行 git 的提交,这样就不会出现忽略的文件了。 同时服务器上相关的文件也会被删除

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push -u origin master
1
2
3
4

ssh 创建

ssh-keygen -m PEM -t rsa -b 4096 -C "your.email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]  // 推荐使用默认地址
Enter passphrase (empty for no passphrase):   // 此处不填写,回车即可;如果填写密码,则每次使用 SSH 方式推送代码时都会要求输入密码。
1
2
3
4
5

若需要使用多个 SSH 密钥对(您可能同时在多个代码托管平台工作),在提示“Enter file in which to save the key” 时输入一个新的文件名称就不会覆盖默认的密钥对。 成功之后显示如下信息:

Your identification has been saved in /Users/you/.ssh/id_rsa.
# Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your.email@example.com
1
2
3
4

在终端输入 open ~/.ssh,用文本编辑器打开 id_rsa.pub 文件(此处是生成公钥的默认名称,如果生成公钥时采用了其他名称,打开相对应的文件即可),复制全部内容。

然后在「SSH 公钥」处添加即可

iCloud

场景1. 克隆这个新建的代码库,提交一段代码

注:首次clone时提示:warning: remote HEAD refers to nonexistent ref, unable to checkout只是警告你下载了一个空库,忽略即可。
git clone ssh://wangdapan@icode.baidu.com:8235/baidu/personal-code/chrome-mock-extension
scp -p -P 8235 wangdapan@icode.baidu.com:hooks/commit-msg chrome-mock-extension/.git/hooks/
cd chrome-mock-extension
#这里ci.yml是示例文件,请自行修改ci.yml文件来定制你的编译任务参考
cat > ci.yml <<__EDL
Global:
    tool : build_submitter
Default:
    profile : [dev]
Profiles:
    - profile:
        name : dev
        env : cmc_standard
        command : ./build.sh
        release : true
    - profile:
        name :  publish
        env : cmc_standard
        command : ./publish.sh
        release : true
__EDL
git add ci.yml
git commit -m "add ci.ym for first commit"
#我们推荐给每一个代码库上传一个ci.yml文件来配置编译命令,每次发评审或提交代码都会运行编译任务
git push -u origin master
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

场景2. 将你已有的Git代码库的代码推送到这个新建的代码库中

cd /path/to/your/git/repo/
git remote -v
git remote rm origin
git remote add origin ssh://wangdapan@icode.baidu.com:8235/baidu/personal-code/chrome-mock-extension
curl -s http://icode.baidu.com/tools/hooks/commit-msg > $(git rev-parse --git-dir)/hooks/commit-msg && chmod u+x $(git rev-parse --git-dir)/hooks/commit-msg
git push -u origin --all
git push -u origin --tags
1
2
3
4
5
6
7
上次更新: 2023/3/7 06:33:47
贡献者: wangdapan, wangdapan