git常用命令

What is git and why should I use it? - Quora

想玩好Github开源项目,不懂git不行,所以这里记录下,在使用中,用到的一些命令,方便自己以后去反复记忆,同时也希望能帮到一些朋友。
主要的命令记住,方便操作,其余的会查询即可。
以实际例子来说明,我在实际使用中用到的一些命令

Getting and Creating Projects

1
2
3
4
5
6
# 创建一个空的Git仓库,或者对于已存在的仓库,进行重初始化
$ git init

# 配置
$ git config [--global] user.name "alanhg"
$ git config [--global] user.email "i@xx.x"

Clone

1
2
# clone仓库
$ git clone -b source git@github.com:heqiang421/heqiang421.github.io.git

Basic Snapshotting

Add

1
$ git add .

Commit

1
2
3
4
$ git commit -m 'message'
$ git push

# 修改最新提交

Reset

1
2
3
4
5
# 撤销暂存区提交,回退一个版本
$ git reset HEAD^

# 恢复到一个已知状态
# git reset --hard

rm

1
2
3
4
5
# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]

# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...

Branching and Merging

Branch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 查看本地分支
$ git branch

# 删除本地分支dev
$ git branch -d dev

# 基于之前的某个 Commit 新开分支
$ git branch <branchName> <sha1-of-commit>

# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]

# 修改对应的远程分支
$ git branch -u origin/dev

# 本地分支重命名
$ git branch (-m | -M) [<oldbranch>] <newbranch>

Checkout

1
2
3
4
5
# 切换本地分支
$ git checkout <branchName>

# 切换分支并将远程分支修改为dev
$ git checkout dev --track origin/dev

Sharing and Updating Projects

pull

1
2
# 拉取最新代码
$ git pull

push

1
2
3
4
5
# 删除远程分支
$ git push origin --delete <branchName>

# 推送到主干
$ git push origin <branchName>

remote

1
2
3
4
5
6
7
8
# 列出远程仓库信息,包括网址
$ git remote -v

# 添加远程仓库,支持多远程仓库地址
$ git remote add [shortname] [url]

# 修改远程仓库对应的网址
$ git remote set-url origin git@github.com:username/repo.git

常见问题

Git: fatal: Pathspec is in submodule

解决办法:

1
2
git rm --cached directory
git add directory

You have not concluded your merge (MERGE_HEAD exists).

1
$ git reset --merge

每次push都提示输入用户名及密码


出现这个的原因是远程库我们是以HTTPS形式设定的,修改为SSH即可

1
2
3
4
5
# 查看远程库协议
$ git remote -v

$ git remote rm origin
$ git remote add origin git@github.com:alanhg/alanhg.github.io.git

辅助资料