git是个好东西,让代码管理更简单。
网上教程也很多,自己写下自己常用的吧。
从来没有用git的,先建一个文件夹或者到准备同步的项目文件夹,先git init 新建仓库。然后设置配置文件
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
你的邮箱和昵称。
然后跟着下面有项目的方法走。
本地以前就有项目的,要同步的
方法
先git add . 提交到本地项目
然后用 git status 看看我们的项目的当前状态
当然也可以用简单查看 git status -s 就是后面加S
再
git commit -m 后面跟着单引号的注释内容快速提交然后在看git status -s 这里就应该没有什么改变了。
这里是本地仓库提交完成了,如果要提交到远程仓库,
先git remote -v 显示当前项目对应的远程仓库 先看看远程仓库的链接。如果没有远程仓库,可以去开源中国等先建一个仓库。
如果没有链接,则加链接 git remote add + 自己自定义别名 +链接 这个过程就是加远程仓库。
git remote rm+远程仓库别名 删除远程仓库 这个命令是放这记下的,这里不需要用这个命令。然后git push 远程链接别名 本地分支,一般是master 如:git push origin master
最后打完收工,本地和远程仓库也同步完成。
要下载的
1:git clone [url] 克隆项目,复制项目 url一般就是开源中国或者git网站的项目地址。
要远端同步到本地的
先git remote -v 显示当前项目对应的远程仓库 先看看远程仓库的链接
然后 git fetch +远端仓库 //远端的下载到本地
最后 git merge +远端仓库分支 // 本地的合并分支
注意:如果merge 报错 refusing to merge unrelated histories 则应该在 git merge +远端仓库分支 后面加 --allow-unrelated-histories
具体的可以见这个:http://gitref.org/zh/remotes/#fetch
对于许久没有同步的,要先远程同步下到本地,再上传。
删除本地git仓库的资料
解决
可以先清除本地文件夹下的git文件,然后在重新初始化新建的git仓库
//删除文件夹下的所有 .git 文件
find . -name ".git" | xargs rm -Rf
接着add,commit等操作即可
有时候不能同步的,先清除本地
有时候不能同步的,先清除本地 方式二:通过命令行,你直接执行git clean -d -fx即可。可能很多人都不明白-d,-fx到底是啥意思,
下一篇关于git的文章会介绍下git clean相关的东西。
git远程强制覆盖本地:
git fetch --all
git reset --hard origin/master
git pull
git强制覆盖本地命令(单条执行):
git fetch --all && git reset --hard origin/master && git pull
有的第一次上次问题
在使用git 对源代码进行push到gitHub时可能会出错,信息如下
此时很多人会尝试下面的命令把当前分支代码上传到master分支上。
$ git push -u origin master
但依然没能解决问题
出现错误的主要原因是github中的README.md文件不在本地代码目录中
4
可以通过如下命令进行代码合并【注:pull=fetch+merge]
git pull --rebase origin master
5
执行上面代码后可以看到本地代码库中多了README.md文件
git忽略已经被提交的文件
例子:
现在项目的根目录放了 .gitignore 文件,并且git远程仓库的项目根目录已经有了 logs文件夹。
由于每次本地运行项目,都会生成新的log文件,但是我并不想提交logs文件夹里面的内容,所以要在.gitignore写logs的规则。
我尝试过添加以下规则
logs/*.log
logs/
/logs/
但是运行git status的时候,始终能看到modified:logs/xx.log 。
正确的做法是:
git rm --cached logs/xx.log,然后更新 .gitignore 忽略掉目标文件,最后 git commit -m "We really don't want Git to track this anymore!"
分支管理:
查看所有分支 git branch
创建分支 git branch +自定义分支名
却换分支 git checkout +自定义分支名
合并分支 git git merge +自定义分支名
删除分支 git branch -d +自定义分支名
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支:$ git push origin :heads/[name]
我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。
如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。
$ git push origin test:master // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支
$ git push origin test:test // 提交本地test分支作为远程的test分支
如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
$ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心
版本(tag)操作相关命令
查看版本:$ git tag
创建版本:$ git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]
查看提交记录 git log 记录太长按 q可退出
回退到某提交 git reset --hard + 以前的commit前几位就行