Git 初步

一些常用的git命令

git init    初始化项目所在目录,初始化后,会在当前目录下出现一个名为.git的目录

git add   <filename>  对某文件开始跟踪,即把目标文件快照放入暂存区

git commit –m ‘initial project’    将修改提交,文件从暂存区(staged area)送到HEAD

 

git clone username@host:/path/to/repository 例如:git clone https://github.com/GinSmile/first_test_rep 会在当前目录下创建一个名为first_test_rep的目录,里面存放所有所有项目文件

git clone username@host:/path/to/repository customname 例如:https://github.com/GinSmile/first_test_rep  myFirstRep 会在当前目录下创建一个名为myFirstRep 的目录,里面存放所有所有项目文件

 

git status 检查当前文件的状态

文件.gitignore用于忽略某些文件

 

git diff    比较已暂存(staged area)和尚未暂存的文件(即实际工作目录中的最新文件),仅显示还没有暂存起来的改动

git diff –cached    比较已经暂存(staged area)起来的文件和上次提交时的快照(HEAD)

 

git commit -a命令,把所有已跟踪的文件commit到HEAD

$ git status # On branch master # # Changes not staged for commit: # # modified: benchmarks.rb # $ git commit -a -m 'added new benchmarks'

 

不再需要 git add 文件就能commit到HEAD

 

rm <filename>   手工移除文件,此时该文件就会在运行 git status 后,在 “Changes not staged for commit” 部分(也就是_未暂存_清单)看到

git rm <filename>    记录移除文件操作,此时该文件就会在运行 git status 后,在 “Changes to be commit” 部分(也就是_未暂存_清单)看到

最后提交的时候,该文件就会在工作目录中删除,并不在纳入版本管理。

git rm <filename>  -f  如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母),以防误删除文件后丢失修改的内容。

git rm --cached <filename> 将文件从Git仓库中删除,但仍希望保留在工作目录中。过后再在.gitignore文件中添加进去。

git mv file_from file_to   移动文件

git mv README.txt README 
相当于以下三条命令
$ mv README.txt README  将工作目录中的README.txt重命名为README
$ git rm README.txt  记录移除文件操作
$ git add README    添加更名后的文件

git log    查看提交历史,-p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新

 

git commit –amend 取消上一次的提交,取而代之的是当前暂存区的快照

git reset HEAD <file>  取消暂存

 

 更新提交当前工作目录

git remote  查看当前的远程库,Gitmorenshiyongorigin来标识clone过来的原始仓库。

git pull  从原是克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。

git push [remote-name] [branch-name]   例如:git push origin master 将HEAD提交到远端仓库

 

 

 The remote end hung up unexpectedly错误的解决

有时候会出现这个错误:

$ git push -u origin master
Username for 'https://code.csdn.net': xujinsmile
Password for 'https://xujinsmile@code.csdn.net':
Counting objects: 47, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (36/36), done.
Writing objects: 100% (46/46), 443.66 KiB | 0 bytes/s, done.
Total 46 (delta 2), reused 0 (delta 0)
efrror: RPC failed; result=55, HTTP code = 0
atal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

解决办法:

更改buffer大小

git config http.postBuffer 524288000

 

合并和分支

git branch查看当前项目的所有分支,master为默认的主分支

git branch test 创建一个名为test的分支

git checkout test 进入test分支(switch to),当前工作目录就会变为test分支,更改当前目录就只会更改test分支,不会对master分支造成影响。如果更改了test分支的文件,git checkout master切换到master,工作目录就有会变成更改之前的状态。

在master分支中,执行git merge test,将会自动合并分支,如果未出现conflict,则合并成功,否则需要手动合并,修改完成后,git add进staged area,再commit。

git branch -d test删除test分支

 

创建标签tag

用tag标签来标记发布点(例如'v1.0')

创建带注释的标签 git tag -a v1.4 -m 'version 1.4'

创建无注释的标签 git tag v1.3

这样,在github的releases里面就会有创建这个标签时的全部文件的压缩包。

 

git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象

 

 

如果已经提交了,想要对之前提交时的文档状态做个tag,要使用以下命令:

首先把之前的提交的校验和都显示出来

GinSmile@GIN /d/git_project/first_test_rep (master)
$ git log --pretty=oneline
db50690f1a58458f32a2f4f96bda8acefb67a6ba Merge branch 'experiment'
b988bc027da2bc0e2a7d2ad03481ee1f26e22556 okok
977bf734fb033a0376e390e5ebb064f75b379562 ok
e3f23ea4b930ac2972529540473de65eaca54643 Merge branch 'experiment'
5adb929323bdcfbad20300abb175b974329b0951 change some lines
f282d63c772fd33352904c840848df767e0a20ad added a todo and modified hellp.py
79ad06246161d39303ea85ac092a58badb274e1b Merge branch 'master' of https://github
ca41ec0394dc59485fa0abe9a8330c1560380c84 update
596735e5cd8f5e3f0378e163f5b293b9e4ccfdcd just some changes
626a522f6bd53de9fa1067d74c480a3cb936309f Update README.md
e97246fce74ecda51d80fa8f871ad8e40a1b3cc7 change encoding to utf-8
8c68f66602d5a731db3206c34fcbf8feb3c60939 <CC><ED><BC>??F8><D3><D0><D6><D0><CE>
a4f23e8e5fc97bf6866f31ceaaae26aba191ea0e 中文测试
5cb2bf3ce38178cce060de0c8ad6ef3b21ed1dcd 中文commit测试
5ae9dafa62aca77d8f8170361f4ba951478bc72f <D6><D0><CE>??E2><CA><D4>
ac7f3e0b6cb81fc0d256e4a3437bc9e0e6ba6ba1 Signed-off-by: Jin Xu <xu.jin.smile@gma
166fdebe975768f758bc4285496c20048881bac4 first commit
68457083502ce4db5d0f3fd516c9a4a9967d94e8 Create hello.py
7c478008b9f61d79a0eae16b08303a2910ca2e99 Initial commit

然后对某个校验和打标签,git tag -a <tag> <校验和>

GinSmile@GIN /d/git_project/first_test_rep (master)

$ git tag -a v1.2 b988bc

 

普通的push命令不会提交tag

GinSmile@GIN /d/git_project/first_test_rep (master)
$ git status
# On branch master
nothing to commit, working directory clean

在push的时候添加 --tags参数,就会把当前文档或对应校验和的文档打标签

GinSmile@GIN /d/git_project/first_test_rep (master)
$ git push --tags
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 336 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/GinSmile/first_test_rep.git
* [new tag] v1.1 -> v1.1
* [new tag] v1.2 -> v1.2
* [new tag] v1.4 -> v1.4
* [new tag] v1.4lighr -> v1.4lighr

 

git push --tags将tag上传到服务器

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值