温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

git - 常用操作汇总

发布时间:2020-06-26 12:00:31 来源:网络 阅读:585 作者:沈猪猪 栏目:开发技术

远程仓库相关命令

检出仓库:$ git@192.168.1.102:yaoxiabing/saltstack.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push [name] [newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]

分支(branch)操作相关命令

查看本地分支:$ git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支:$ git push origin [name]
删除远程分支:$ git push origin :heads/[name] 或 $ git push origin :[name]  如:[root@centos7 saltstack]# git push origin --delete 123  # 删除远程分支

发现有人总结得不错,就直接引用了。http://blog.chinaunix.net/uid-9398085-id-3164754.html


标签(tag)操作相关命令

创建远程标签:$ git push origin 标签名
删除远程标签:$ git push origin :refs/tags/标签名 
列出标签:$ git tag -l
删除本地标签:$ git tag -d 标签名


example1 : 把本地的某个分支origin2提交到远程仓库,并作为远程仓库的master分支,或者作为名叫123的分支

[root@centos7 saltstack]# git branch origin2   # 创建一个本地分支origin2
[root@centos7 saltstack]# git push origin origin2:123   # 提交本地origin2分支作为远程的123分支
[root@centos7 saltstack]# git push origin origin2:master   # 提交本地origin2分支作为远程的master分支

 

example2:  删除不对应远程分支的本地分支                 

[root@centos7 saltstack]# git fetch -p # 在fetch之后删除掉没有与远程分支对应的本地分支 -p:是prune 修剪的意思


example3:  手误rm删除本地仓库的某个文件,使用git checkout -- <file>可以恢复

[root@centos7 saltstack]# ll
total 24
drwxr-xr-x 4 root root    37 Oct 30 23:27 config
-rw-r--r-- 1 root root   555 Oct 30 23:27 config.ini
-rw-r--r-- 1 root root 13157 Oct 30 23:27 fabfile.py
-rw-r--r-- 1 root root    38 Oct 30 23:31 README
drwxr-xr-x 4 root root    37 Oct 30 23:27 template
[root@centos7 saltstack]# rm README -f
[root@centos7 saltstack]# ll
total 20
drwxr-xr-x 4 root root    37 Oct 30 23:27 config
-rw-r--r-- 1 root root   555 Oct 30 23:27 config.ini
-rw-r--r-- 1 root root 13157 Oct 30 23:27 fabfile.py
drwxr-xr-x 4 root root    37 Oct 30 23:27 template
[root@centos7 saltstack]# git checkout -- README
[root@centos7 saltstack]# ll
total 24
drwxr-xr-x 4 root root    37 Oct 30 23:27 config
-rw-r--r-- 1 root root   555 Oct 30 23:27 config.ini
-rw-r--r-- 1 root root 13157 Oct 30 23:27 fabfile.py
-rw-r--r-- 1 root root    38 Oct 30 23:35 README
drwxr-xr-x 4 root root    37 Oct 30 23:27 template


example4:  使用rm(没使用git rm)删除某个文件,git commit -a强制提交

[root@centos7 saltstack]# ls
config  config.ini  fabfile.py  README  template
[root@centos7 saltstack]# 
[root@centos7 saltstack]# 
[root@centos7 saltstack]# rm README -f
[root@centos7 saltstack]# git commit -a -m "for test"
[root@centos7 saltstack]# git push
[root@centos7 saltstack]# ll
total 20
drwxr-xr-x 4 root root    37 Oct 30 23:27 config
-rw-r--r-- 1 root root   555 Oct 30 23:27 config.ini
-rw-r--r-- 1 root root 13157 Oct 30 23:27 fabfile.py
drwxr-xr-x 4 root root    37 Oct 30 23:27 template


example5:使用git rm -rf强制删除某个目录后,使用git reset回退。

git reset [--hard|soft|mixed|merge|keep] [commit或HEAD],根据--soft --mixed --hard,会对working directory、index、HEAD进行重置。
A). --hard:除了“Untracked files”,其他变更都被重置。即:重设index和working directory,自从commit以来在working directory和index中的任何改变都被丢弃,并把HEAD指向commit。 
B). --soft:这个模式的效果是,执行完毕后,自从commit以来的所有改变都会显示在git status的"Changes to be committed"中,当然,还有“Untracked files”。即:恢复commit以来的index和working directory内容。即:not commited 
C). --mixed:这个模式是默认模式。这个模式的效果是,自从commit以来的修改都会被保留,但会被标记成"Changes not staged for commit"。即:仅重置index,文件修改被转移到working directory中。即:not added
(来自某大神的博客:http://lingxiankong.github.io/blog/2014/07/18/git-notes/)


example6:  如何判断分支tracking了没?

git的tracking就是把来源和目标绑定在一起,tracking只能一对一。
git push -u origin master 这时所在的分支就已经 tracking to origin/master 了,-u 就是这个用处。

查看.git/config配置文件也可以看出来
[branch "master"]
remote = origin
merge = refs/heads/master      # 有这个表示是有tracking的,tracking实质其实就是pull 的 merge 动作来源

 

查看提交日志相关命令

[root@centos7 saltstack]# git blame test.txt  # 查看test.txt这个文件中内容每一行提交的作者,最后的提交时间
[root@centos7 saltstack]# git log  # 查看仓库提交记录,有几个常用选项
--oneline:一行显示每个commit的提交哈希值和提交信息
--graph:在显示内容左边绘制一张分支拓扑图
--all:显示所有分支
--name-status:简洁的日志信息,以及修改了哪些文件
-5:显示5个commit记录


git高级命令使用见:http://www.infoq.com/cn/news/2016/01/12-git-advanced-commands

   

参考链接:http://zengrong.net/post/1746.htm



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI