- 首先创建文件夹,然后通过命令行进行初始化。
cd
进入到想要github管理的文件夹下面git init
初始化- 添加新文件,编辑完后用add命令
git add filename
- 用
git commit
命令告诉git,把文件提交到仓库:
git commit -m "write a new file"
用git add
命令add多个文件后,然后再提交commit。 git status
可以查看当前git的状态,可以知道有没有做更改等git diff
可以查看具体更改了什么地方,查看具体更改了什么地方才安心提交。安心用git add filename
命令,进行修改提交,修改提交和新增文件是一样的命令。然后再git commit -m “xxxxxx”
- 版本回退
- 每次提交或更新后相应的版本号也会更新,git计算出SHA1码作为版本号,避免不同终端的版本号冲突。在git中,使用
HEAD
表示当前版本号,HEAD^
表示前一个版本,HEAD^^
表示上上个版本。前10个版本可以使用HEAD~10
- 返回上一个版本命令:
git reset --hard HEAD^
- 回到上一个版本后,又想回到未来的版本,可以查找上一个版本的commi id. 方法:
git reflog
命令,可以找到之前的git操作。找到相应版本的head。或者到.git文件夹里面找到之前的那个head文件夹。里面有相应的head id 。 git log
查看 git 日志
- 每次提交或更新后相应的版本号也会更新,git计算出SHA1码作为版本号,避免不同终端的版本号冲突。在git中,使用
- 其他命令
git diff HEAD -- filename
可以查看版本库里面的文件和当前文件有什么差别。git checkout -- filename
撤销工作区的修改(包括删除),使得工作区的文件和暂存区或版本库里面的一样。即该操作就是丢弃工作区的修改git reset HEAD file
丢弃暂存区的修改。- 删除操作:
- 可以直接用命令
rm filename
在文件夹中删除,然后将更改提交到版本库 - 也可以直接在版本库中删除:
git rm filename
,然后git commit -m "delete filename"
- 可以直接用命令
- 远程库(先有本地库,后有远程库)
- 首先在githu上面建立一个版本库
- 然后关联远程库:
git remote add origin git@github.com:mumianyuxin/repo-name.git
- 关联后使用命令
git push -u origin master
第一次推送master分支的所有内容; - 此后,本地每次提交后,只要有必要,就可以使用命令
git push origin master
推送修改,其中master是本地分支的名字。
- 远程库(先有远程库,把远程库克隆)
git clone git@github.com:mumianyuxin/repo-name.git
其中:mumianyuxin/repo-name.git
是远程仓库的名称,运行完后会在本地生成一个和远程仓库一样名称的本地文件夹。
- 创建与合并分支
- 创建新分支,这里是dev分支:
git checkout -b branchname
或者,git branch branchname
+git checkout branchname
- 查看当前所有分支
git branche
,就会列出所有分支,当前分支会在前面加上*
- 切换分支:
git checkout branchname
- 工作成果合并:
git merge branchname
将指定分支合到当前分支。 - 删除分支:删除已经被merge过的分支,
git branch -d branchname
,删除还没被merge过的分支,强制删除git branch -D branchname
git merge branchname
显示有冲突时,git status
查看有冲突的文件,然后再编辑有冲突的文件,选择保留哪个分支更改的内容,然后再git add filename
+git commit -m "xxxxxxxxxxxxxxx"
。- 带参数的
git log
命令也可以查看分支的合并情况,git log --graph --pretty=oneline --abbrev-commit
。git log --graph
- 创建新分支,这里是dev分支:
- 分支管理
- 禁用
Fast foward
模式的合并,这样相当于时在主线上增加一次commit
可以遗留下commit
信息。git merge --no-ff -m "xxxxxxxxxxxxxxxxxxxxxxxxxxx" branchname
因为时相当于重新commit一次,所以需要加上-m参数并进行相应的描述。 - 我们在一个协作项目里面工作的时候,master分支应该时最稳定的,是放发布版本的地方,应该创建一个工作版本(比如dev分支),然后伙伴们在dev分支上进行再分支,然后每个人修改完成后再合并到dev分支,dev分支稳定后再merge到master分支。
- 禁用
bug分支
- 有时候要暂存当前dev支的工作文件(还没有commit)的文件,而需要紧急debug master branch。 这时候stash就派上用场了。 命令
git stash
,然后git checkout branchname
转到想要 debug 的 branch,创建新分支,git branch branchname
然后git checkout branchname
转到新建的分支,修复完成后,merge到master。git branch -d branchname
删除刚刚用于debug分支。然后回到dev分支,git stash list
查看stash里面的内容。恢复的时候有两种方法,一:git stash apply
,恢复后stash的内容没有删除,需要手动git stash drop
来删除;二:git stash pop
恢复的同时把stash里面相应的东西也删除了。 - 多次stash后想恢复相应的版本:先用
git list
查看相应的版本号,用git stash apply stash@{0}
进行恢复。 - 多人协作
查看远程库信息,使用
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
,如果有冲突, 要先处理冲突。
- 有时候要暂存当前dev支的工作文件(还没有commit)的文件,而需要紧急debug master branch。 这时候stash就派上用场了。 命令
- 标签管理
- 命令
git tag <name>
用于新建一个标签, 默认为HEAD, 也可以指定一个commit id
,如git tag <tagname> <commit id>
git tag -a <tagname> -m "blablabla..."
可以指定标签信息;git tag -s <tagname> -m "blablabla..."
可以用PGP签名标签;- 命令
git tag
可以查看所有标签。 - 删除标签:
- 命令
git push origin <tagname>
可以推送一个本地标签; - 命令
git push origin --tags
可以推送全部未推送过的本地标签; - 命令
git tag -d <tagname>
可以删除一个本地标签; - 命令
git push origin :refs/tags/<tagname>
可以删除一个远程标签。
- 命令
- 命令
- 使用GitHu
- 参与别人的开源项目。
- 在该项目的网站上点击
Fork
,就可以在自己的账号下克隆一份与项目一样的仓库。 - 然后就可以从自己的仓库下
clone
,push
等,想要将自己的更改更新到项目官方库,可以在网站上面pull request
- 在该项目的网站上点击
- 参与别人的开源项目。
- 使用码云
- 将本地仓库关联远程库
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
- 如果失败,并报告说已经本地仓库已经和远程仓库关联了,可以先关闭原先的关联:
git remote rm origin
,用git remote -v
查看关联信息。 - 同一个本地库关联不同的远程库:
- 先
git remote rm origin
删除原来的关联。 git remote add github git@github.com:michaelliao/learngit.git
将本地库关联到github,注意,远程库的名称叫做github了,而不叫origin,相应的命令行在使用命令行的时候注意远程库的名称。git remote add gitee git@gitee.com:liaoxuefeng/learngit.git
关联到码云,该远程库的名称叫做gitee。- 如果push到github,命令
git push github master
- 如果push到gitee,命令
git push gitee master
- 先
- 将本地仓库关联远程库
- 自定义git
在linux下使用github
最新推荐文章于 2022-05-04 21:38:29 发布