git操作

1.从github上clone下来的项目,再将该项目上传到git.oschina.net上

  git remote //查看远程仓库

  git remote -v //可以查看远程仓库的地址

  git remote remove <name> //移除仓库

  git remote add <name> <url> //eg:git remote add origin https://git.oschina.net/username/test.git

  git add . //添加文件

  git commit -am "first commit"

  git push -u origin

2.撤销commit

  git log 查看提交的历史记录,记录下提交的hash值

  git reset --hard <commit_id> 即可恢复提交

3.合并分支

  git checkout master //切换到主分支

  git merge 分支hash_id 将分支合并到当前分支

4.git clone项目时报错

  使用ssh方式拉取项目时报错如下

1 [root@al soft]# git clone git@gitee.com:test/test.git
2 正克隆到 'test'...
3 remote: Counting objects: 15055, done.
4 remote: Compressing objects: 100% (10131/10131), done.
5 packet_write_wait: Connection to 116.211.167.14 port 22: Broken pipe
6 fatal: The remote end hung up unexpectedly
7 fatal: 过早的文件结束符(EOF), 48.24 MiB | 9.83 MiB/s
8 fatal: index-pack failed

谷歌了好久也没找到彻底解决的办法,临时解决办法如下:

clone前先执行如下语句

git config --global core.compression 9
然后执行
git clone git@gitee.com:test/test.git

 5.git 添加了 .gitignore 文件 不生效

  Git忽略规则:

在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如果没有这个文件,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:

# 此为注释 – 将被 Git 忽略

*.sample    # 忽略所有 .sample 结尾的文件
!lib.sample    # 但 lib.sample 除外
/TODO    # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt   # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

  .gitignore规则不生效的解决办法

把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push

 6.当前项目存在子模块的问题

 #git add ./mailscan/*
fatal: Pathspec './mailscan/crack_pop.py' is in submodule 'mailscan'

跟踪mailscan文件夹下的文件时,提示在子模块下

一个项目中 只有父目录下 存在一个 .git目录,但是在mailscan目录下也发现了该目录,在mailscan下,将.git目录删除

然后执行

git rm --cached mailscan
git add ./mailscan/*
git status 查看状态,发现已经提交成功

【节点只拉取git上的项目代码】

# mkdir rules
# cd rules # git init # git remote add origin git@gitee.com:user
/project.git # git pull origin master

# 当执行 git pull的时候缺报错提示:

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details

git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> master  

解决办法:

# git branch --set-upstream master origin/master

然后每次git pull即可

原文地址:https://www.cnblogs.com/Kevin-1967/p/7425020.html