Git常用命令

1.下载源代码

默认从master分支下载:
git clone https://github.com/xxx/xxx.git ,对于低版本的git客户端,需要输入用户名和密码,如:git clone https://username:passwd@github.com/xxx/xxx.git

从指定分支下载:
git clone -b 分支名称 https://github.com/xxx/xxx.git

2.删除分支

-删除本地分支: git branch -d
-删除远程分支: git push origin --delete ,这个命令需要先删除本地分支后执行才能生效;或者使用git push origin :originBranchName先删除远程分支,再使用git branch -d localBranchName删除本地分支,参考push and delete remote branches

3.重命名

-重命名本地分支: git branch -m ,重命名当前分支:git branch -m
-重命名远程分支: 在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。

4.查看提交日志

git log --oneline
如果需要查看指定作者的提交日志,可以使用--author=""进行过滤,如:git log --author="zhangsan" --oneline
另外,git log --raw 可以查看更加详细的日志信息。
查看某个文件的提交日志:git log 文件名 或者 git log --pretty=oneline 文件名
修改最近一次git提交的作者信息:git commit --amend --author="作者名称 <作者邮箱>"

5.保存用户名和密码

git config credential.helper store
如果在项目根目录下执行该命令,则只会保存该项目自己的用户名和密码信息。

6.撤销提交

git reset --soft HEAD^

参数含义:
--mixed:不删除工作空间改动代码,撤销commit,并且撤销git add .操作。这是默认参数,git reset --mixed HEAD^git reset HEAD^效果是一样的。
--soft:仅仅是撤回commit操作,不撤销git add . 代码改动仍然保留。
--hard:删除工作空间改动代码,撤销commit,撤销git add .,注意完成这个操作后,就恢复到了上一次的commit状态。

HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2

6-1.修改最后一次提交commit信息

如果commit注释写错了,只是想改一下注释,只需要:

git commit --amend

此时会进入默认vim编辑器,修改注释完毕后保存就好了。

或者直接执行:

git commit --amend --message="提交日志"

参考Git 修改已提交 commit 的信息

6-2.修改已经push到远程的commit信息

参考修改已经push了的commit信息

6-3.删除已经push到远程的commit记录

第一步:回滚上一次或N次提交

# 回滚上一次提交,即:最后一次提交
git reset --hard HEAD^
# 或者
git reset --hard HEAD~1

第二步:强制推送本地代码到远程

git push origin master -f

一般来讲,不会直接删除连续的多次commit记录(否则所做的工作就全部作废啦~),通常可能会删除指定的某一次commit记录(非最后一次提交)。

第一步:查看提交日志

git reflog
b08ec3f HEAD@{4}: commit: commit--3
39841d1 HEAD@{5}: commit: commit--2
35f96e1 HEAD@{6}: commit: commit--1

假设:现在要删除commit--2这条提交记录。
获取要删除记录commit--2的前一次提交commit--1的提交ID:35f96e1。

第二步:执行rebase操作

git rebase -i 35f96e1

执行完这个命令后,就可以看到35f96e1后的所有commit记录。
默认是使用vim编辑器打开了commit log list,然后就可以针对不需要的某些log进行删除。
vim保存退出。

第三步:解决冲突,强制推送更新到远程

git add .                   # 冲突时使用
git commit -m "new commit"  # 冲突时使用
git rebase --continue       # 冲突时使用
git push origin master -f

再查看远程的提交记录,发现commit--2就没有了。
参考:https://www.jianshu.com/p/18b5cbc3e702 Git删除远程某个历史提交记录

7.获取远程分支信息

git remote update origin --prune:更新远程分支列表,这里要注意下,如果你的remote branch不是在origin下,按你得把origin换成你的名字。
git fetch --prune :这样就可以实现在本地删除远程已经不存在的分支。

8.更新远程分支到本地

解决“Rebase autoskip patches that are already in upstream”,执行:git pull --rebase
详见:Rebase autoskip patches that are already in upstream

9.查看文件是否被加入到Git仓库进行追踪

git lfs ls-files --include=<path>
这里的path,可以是一个文件夹也可以是一个文件,这样就可以显示一个较小范围内的追踪文件。

10.不显示本地分支与远程分支的同步状态

假定在dev分支上,虽然本地分支已经push到服务器上了,但是git status不显示本地分支与远程分支的同步状态:“Your branch is up to date with 'origin/dev'”,如下:

$ git status
On branch dev
nothing to commit, working tree clean

解决办法:
使用-u参数手动设置本地分支追踪远程分支:

git branch -u origin/dev
$ git status
On branch dev
Your branch is up to date with 'origin/dev'. # 这一行表示本地分支与远程分支的同步状态

nothing to commit, working tree clean

参考:http://www.apes.today/post/28792553/0 Git status-不显示远程回购的状态

11.全局配置项

查看Git所有配置:git config --list
删除全局配置项
(1)终端执行命令:
git config --global --unset user.name

(2)编辑配置文件:
git config --global --edit

12.中文问题

解决git status不能显示中文:git config --global core.quotepath false
解决git bash 终端显示中文乱码:
在git bash的界面中右击空白处,弹出菜单,选择选项->文本->本地Locale,设置为zh_CN,而旁边的字符集选框选为UTF-8。
英文显示则是:Options->Text->Locale改为zh_CN,Character set改为UTF-8。
参考:git status 显示中文和解决中文乱码

在gitk界面中注释中文乱码,添加配置:git config --global gui.encoding utf-8
参考:gitk中文乱码 git中文乱码

13.本地仓库关联到远程仓库地址

此时远程仓库只有一个地址,仓库中没有任何文件,关联之后将本地仓库文件推送到远程仓库中。
git remote add origin 远程仓库地址 ,其中origin可以更换为其他名称(如:将一个本地仓库关联多个远程仓库时需要设置为不同的名称)。
查看已经关联的远程仓库地址:
git remote -v

14.设置用户名和邮箱

查看设置信息:

# 如果在git项目根目录下执行,查看的是:针对该项目的git配置+git全局配置;否则查看的是git全局配置信息。
git config --list

全局设置:

git config --global user.name "zhangsan"
git config --global user.email "zhangsan@gmail.com"

针对项目单独设置(在项目根目录下操作):

git config user.name "lisi"
git config user.email "lisi@gmail.com"

https://blog.csdn.net/pintu274111451/article/details/79767970 Git 当前项目设置 用户名、邮箱

更多git命令及使用方法详见:https://git-scm.com/documentation

15.取消文件跟踪与删除文件

如果不想使用git跟踪某个文件/目录时,分别针对2种情况进行处理:

  1. 如果文件/目录并未加入到git仓库,直接在.gitignore文件中添加需要忽略的文件/目录即可
  2. 如果文件/目录已经添加到git仓库,此时取消git跟踪使用git rm命令实现。

在使用git rm命令时一定要注意参数的不同,执行效果也不同。

git rm -r --cached .  # 不删除本地文件
git rm -r --f .  # 删除本地文件

举例说明:

git rm --cached readme1.txt  # 删除readme1.txt的跟踪,并保留在本地
git rm --f readme1.txt  # 删除readme1.txt的跟踪,并且删除本地文件

如果仅仅需要取消文件跟踪而无需删除本地文件,一定要使用--cached选项,切记!

16.Windows环境执行git clone时提示文件名过长

Git解决Filename too long的问题

posted @ 2017-01-24 22:23  nuccch  阅读(208)  评论(0编辑  收藏  举报