平时用的Git命令笔记

分布式,不必联网,分支管理
1.git init 初始化一个repo
2.git add把一个文件添加到repo,把一个文件修改添加到暂存区
3.git commit把一个文件提交到repo -m “描述本次操作”,把暂存区的所有内容提交到单前分支
4.git diff查看修改的内容
5.git status查看工作区的状态
6.git log显示由近到远的提交日志,以便回退到过去的某个版本 git log --pretty=oneline
7.git reset --hard HEAD^ 回退到上一个版本 HEAD^^回退到上上个版本
git reset --hard commitid 回退到指定的commitid的版本
git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区
git内部有个指向当前版本的HEAD指针,回退的时候只是改动HEAD指针的位置,然后修改工作区的文件。
8.git reflog显示命令历史,以便确定要回到未来的哪个版本
9.git checkout – file 回退到最近一次git commit或git add的状态,丢弃工作区的修改
10.git rm删除文件,类似git add-4
11.git remote add origin git@git.51.nb:geguirong/testremote.git把本地仓库和远程仓库关联
12.git push -u origin master, git push是推送当前master分支内容到远程,-u可以把本地master和远程master管理起来,在以后推送拉取时就可以简化命令git push origin master
13.git checkout -b dev 创建dev分支并切换到dev分支,git branch newbranchname创建分支,git checkout切换分支,git merge frombranchname 命令用于合并指定分支到当前分支,git branch -d branchname删除分支
14. 解决冲突,修改文件然后git add, git commit,然后git log
15.bug分支,git stash list, git stash drop, git stash apply
16.切换分支git checkout dev,然后git branch -d ggrfeature1,删除未合并的feature git branch -D
17.git remote/ git remote -v 查看远程仓库的信息 如果没有推送权限,就看不到push的地址。
18. git push origin master/dev/bug/feature
19. git checkout -b branch-name origin/branch-name 在本地创建和远程分支相同的分支
20. git checkout -b branch-name origin/branch-name在本地推送分支
21. git pull从远程抓取分支
22. git tag :显示tag列表,按字母排序
git show :显示tag信息
给当前commit打tag:
git tag -a -m “description”
给之前的版本打tag:
git log --pretty=oneline --abbrev-commit
git tag -a -m “description”
(git tag v0.9 4ec5f7c -m “conflict finxed dev tag”)
用私钥签名tag:
$ git tag -s v0.2 -m “signed version 0.2 released” fec145a

签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对
删除标签:
git tag -d v0.1
把标签推送到远程:
git push origin
一次性推送全部尚未推送到远程的本地标签:
git push origin --tagsgit
git push origin v0.1.2
删除标签
$ git tag -d v0.9

删除远程标签
$ git push origin :refs/tags/v0.9

23.git fork在自己的账号下克隆一个仓库, 然后从自己的仓库下git clone,然后再修改推送到自己的仓库,如果想要开源项目接受,可以发起一个pull request
24.git .gitignore
在工作区目录下创建.gitignore文件
25.git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.st status
$ git config --global alias.unstage ‘reset HEAD’

$ git unstage test.py

$ git config --global alias.last ‘log -1’

git config --global alias.lg “log --color --graph --pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ --abbrev-commit”

–global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。

工作区:电脑里能看到的目录
版本库:.git

git add之前,git diff有输出,表明工作区和暂存区是不一样的

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!

$ git push origin dev

但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!

因此,多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
小结
查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a -m "blablabla…"可以指定标签信息;
git tag -s -m "blablabla…"可以用PGP签名标签;
命令git tag可以查看所有标签。
在GitHub上,可以任意Fork开源仓库;
自己拥有Fork后的仓库的读写权限;
可以推送pull request给官方仓库来贡献代码。
忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

  1. 推送本地分支到远程分支,如果远程分支不存在就会创建
    git checkout -b branch-name origin/branch-name 在本地创建和远程分支相同的分支
    git push origin feature-testCase:feature-testCase
  2. git branch -vv
  3. git branch --set-upstream-to=origin/feature-testCase feature-testCase

git .gitignore失效
git rm -r --cached .
git addpush

git branch -D hongchangfirst #删除分支
git branch -r -d origin/hongchangfirst #删除本地的索引
git push origin :hongchangfirst #真正删除远程分支的内容
注意,冒号前面的空格不能少,相当于把一个空分支push到server上,等于删除该分支。

规则很简单,不做过多解释,但是有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。不要误解了 .gitignore 文件的用途,该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。
git rm --cached file_path
git commit -m ‘delete remote somefile’
git push

git rm file_path
git commit -m ‘delete somefile’
git push

git workflow https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
A successful Git branching model http://nvie.com/posts/a-successful-git-branching-model/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值