git命令最全使用,冲突解决方法

git命令最全使用,冲突解决方法

2023年7月7日发(作者:)

GIT使用技巧

1、版本管理历史

集中式版本控制、分布式版本控制

CVS -> SVN -> GIT

GIT由来,出于人道主义精神,免费使用BitMover公司的BitKeeper,

Samba的Andrew反向工程(试图破解BitKerper协议),收回免费使用权限,

不得不自己开发,2周之后git诞生,2008年github网站上线

2、安装配置

git config -l 显示所有配置信息

git config --global -l 显示所有全局配置信息

git config --global '用户名'

git config --global '邮箱'

git config --global t simple/matching

simple:只推送当前分支

matching:推送所有同名分支

3、基本操作

git init 初始化版本库

git add 添加文件

git add . 添加所有文件

git commit -m '信息' 提交修改

git commit -a -m '信息' 提交所有修改,相当于默认执行了(git add .)

git commit -a --amend 修改上次提交(本地使用,已经推送到仓库的提交不要使用)

git status [-s] 查看当前[简短]状态

git log [--oneline] 查看提交日志[单行显示]

git log [--graph] 查看提交日志[显示提交树]

git rm filename 删除工作区文件,并将这次删除放入暂存区

git rm --cached file 停止追踪文件,但文件会保留在工作区

git mv old new 改文件名,并将这次修改放入暂存区

4、文件忽略

.gitignore文件

语法规则:

空行或#开头的行(注释行)将会被忽略

指定文件

abc/ 忽略abc文件夹

/abc 忽略当前目录下的abc,不包括其他目录下的abc

*.apk 忽略后缀为apk的文件

! 除了文件

*.[oa] 或略所有.o和.a后缀的文件

abc/*.log 忽略abc目录下的所有log文件,不会递归查找

abc/**/*.log 忽略abc目录下的所有log文件,会递归查找 忽略已经添加到仓库的文件或目录,[--cached]会保留本地文件

忽略文件:git rm --cached file_name

忽略目录:git rm -r --cached dir_name

然后提交推送即可

5、分支管理

git branch 显示本地所有分支

git branch -r 显示远程所有分支

git branch -a 显示本地和远程所有分支

git branch test [master] [基于master分支]创建test分支

git branch -d test 删除本地test分支

git push origin --delete test

git branch -dr test 结合上步操作,删除远程test分支

git merge test 将test分支合并到当前分支

git checkout test 切换到指定test分支

git checkout -b test 创建test分支并切换

git checkout 将文件的修改撤销

git checkout . 将恢复上次commit到工作区

git checkout HEAD [index] [将index文件]从版本库中替换暂存区及工作区

git reset HEAD 将文件的add操作撤销

6、开发流程

master 主分支,主要用来版本发布

develop 日常开发分支,该分支正常保存了开发的最新代码

release master分支的未测试板,比如某期功能开发完成,那么就将develop分支合并到release分支,测试没有问题,并且到了发布日期就合并到master分支,进行发布

local 本地功能分支,一般fork自develop分支

7、远程分支

git clone git仓库 克隆一个git仓库

git checkout develop 首次clone仓库后看不到其它分支,需要作此操作

git pull 从托管服务器拉取并合并,若工作区或暂存区有待处理则无法执行

git fetch 从托管服务器拉取,但是不合并

git push 向托管服务器推送,若服务器版本有更改则会失败需要先pull

8、先本地创建,再远程托管

git init

git add .

git commit -a -m 'init' 添加修改到暂存区并提交(只能是已经纳入管理的文件)

git remote add origin 远程仓库

git push -u origin master 首次需要输入用户名和密码(会缓存)

git credential-manager uninstall 清除缓存的用户名和密码 9、差异比较

git diff 工作区与上次提交的差异

git diff --cached 暂存区与上次提交的差异

git diff --staged 暂存区与上次提交的差异

git diff HEAD^ HEAD 上次提交和上上次提交的差异

git diff sha1 sha2 两次历史提交的差异

10、恢复命令

1、git reset [--mixed] 默认选项

恢复到指定提交,会修改commit和工作区,再次提交需要add/commit

2、git reset --soft

恢复到指定提交,会修改commit,再次可以直接commit

3、git reset --hard

恢复到指定提交,会修改commit和工作区,不会保留任何东西

4、git reset HEAD^

恢复到上次的提交,即删除最后一次的提交

5、git reset HEAD

恢复文件的add操作

11、SSH登录

1、在~/.ssh目录生成公钥私钥对:ssh-keygen [-t rsa]

2、将公钥添加到项目中, => Settings => SSH and GPG keys

3、之后即可无密码登录(首次登录会有信任提示)

12、工作原理:

13、标签

参数介绍:

-a:添加附注标签

-m:指定说明信息

-d:删除附注标签

-l:列表显示标签

实例演示:

git tag [-l/--list] 列出所有标签

git tag v1.0 [commit] 创建基于指定提交的标签

git show [tag] 查看tag信息

git push [remote] [tag] 提交指定tag

git push [remote] --tags 提交所有tag

git checkout -b [branch] [tag] 新建一个分支,指向某个tag

14、远程同步

git fetch [remote] 下载远程仓库到本地仓库,不会改变暂存区和工作区

git remote -v 显示所有远程仓库

git remote show [remote] 显示某个远程仓库的信息

git remote add [name] url 增加一个新的远程仓库,并命名

git remote remove name 移除指定的远程仓库 git pull [remote] [branch] 下载远程仓库到本地仓库并合并,会改变暂存区/工作区

git push [remote] [branch] 上传本地分支到远程仓库

git push [remote] --force 强行推送本地分支到远程仓库,即使有冲突

git push [remote] --all 推送所有分支到远程

git push --set-upstream origin develop

为推送本地develop分支建立与远程上游的追踪,首次推送远程不存在的分支时使用

15、忽略文件权限的修改

现象:首次推送到服务器上的代码,文件全部都修改了,不同系统的文件权限管理的形式不同

git config de false

16、冲突解决

产生原因:多人的提交修改了相同的文件

现象:推送失败,提示有更新的提交,请先拉取(git pull)

出现冲突:

<<<<<<< HEAD

123 本地的修改

=======

111111 远程的修改

>>>>>>> a5a658088bf3ef6bd5124a2eda992b91d66b1340

解决方案:修改代码

123

111111

提交推送

git commit -a -m '合并冲突'

git push

17、忽略指定文件的修改

忽略指定文件的修改:git update-index --assume-unchanged 文件名

取消忽略文件的修改:git update-index --no-assume-unchanged 文件名

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688702501a163799.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信