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即可